Recently, GUI operating systems have become more and more the standard user front end computing environment in which to work. The majority of computer system users today work on computers running some type of GUI operating system such as Windows and Windows 95, manufactured by Microsoft Corp., Redmond, Wash., the Apple MAC operating system, manufactured by Apple Corp., Cupertino, Calif., IBM OS/2, manufactured by IBM Corp., Armonk, N.Y., X-Windows for UNIX type operating systems (OS), etc. The majority of these GUI operating systems today incorporate some form of temporary buffering facility, whereby data from one window may be cut or copied to a buffer (i.e. the clipboard in the Windows operating system) and later pasted into another application. The use of this buffer is a simple and effective mechanism of getting data from one application into another, especially when the applications were not designed to work with each other. This mechanism allows applications from different vendors to share data without each knowing about the other. However, for this mechanism to function, the application itself must have been written to include the necessary cut, copy and paste functions for a user to exploit the temporary buffer mechanism (i.e. the clipboard in Windows). Unfortunately, there exist many applications that do not incorporate this mechanism to get data out of their window(s) and into the clipboard. Applications such as terminal emulators, data communication programs (i.e. modem and faxing programs), Internet access software, etc., generally do not supply a simple and easy mechanism to get data out of their programs.
Even those applications that do incorporate a cut, copy and paste mechanism to get data into and out of their window(s) suffer from additional disadvantages. Sharing mechanisms, like the clipboard in Windows, do not provide any means of processing the data to be shared once it has been selected or designated by the user. There is no mechanism for any post processing functions such as spell checking or optical character recognition. In addition, users do not have any options in deciding what to do with the data copied into the clipboard. The only thing a user may do with clipboard data is paste it into another application that was written to have the ability to receive clipboard data. No output destination alternatives exist such as outputting the selected data to a file, a printer, electronic mail facility or another window (whether or not the application was written to accept clipboard data).
Screen capture programs, well known in the prior art, offer an alternative to the clipboard for capturing window data, but they too suffer from disadvantages. Screen capture programs operate on the level of screen memory. They allow a user to capture any portion of the actual visible screen without regard to the type of data being displayed. Captured data is by necessity stored as bitmapped graphics data. It is impossible to capture a text portion of a screen corresponding to, for example, a word processor and store the captured data as text or string data. Screen capture programs suffer from not being able to store the data they capture in the data's native format.
Hereinafter, the term output device is defined as any hardware device, file, software application or other receptacle, existing either in hardware or software, that is able to receive data.